#include<stdio.h> main() {char str1[]="hao do you do",str2[10]; char *p

来源:百度知道 编辑:UC知道 时间:2024/06/24 14:04:52
在C语言中#include<stdio.h>
main()
{char str1[]="hao do you do",str2[10];
char *p1=str1,*p2=str2;
scanf("%s",p2);
printf("%s",p2);
printf("%s\n",p1);}若运行输入 :HOW DO YOU DO 后为什么结果是HOW hao do you do

这样的结果是正确的。因为输入str2时,虽然你输入的是HOW DO YOU DO,但是执行字符串输入时是以空格为结尾标志,也就是str2只接收到HOW为止,后面的字母都不接收了,所以*p2=HOW,于是printf("%s",p2)语句就只能输出HOW,因为此句没有换行,所以接着printf("%s\n",p1)语句就输出hao do you do,结果就是HOW hao do you do 。

关键还在于用scanf函数输入字符串的规则,假如你不用scanf函数,而用gets函数,那么就能得到你想要的答案,因为gets函数是不能空格为结尾标志,而以'\n',也就是回车键为标志。如下:
#include<stdio.h>

main()
{
char str1[]="hao do you do",str2[15]; /*注意,是str2[15],不是10,因为包括空格之后,str2[10]已经放不下这么多字符了,如果不改的话,就会出错,会影响到后面的printf("%s",p1)的输出。*/
char *p1=str1;
char *p2=str2;

gets(p2); //用这个,就能接收空格,因为不以空格为结尾标志

printf("%s\n",p2);
printf("%s\n",p1);
}

字符数组输入以空格分隔
你只输入了HOW